//package com.settlement.system.csv;
//
//import com.settlement.system.common.enums.ExcelFileType;
//import lombok.extern.slf4j.Slf4j;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//
///**
// * 多文件导入
// *
// * @author Ximi
// * @since 2020/08/31
// */
//
//
//@Slf4j
//public class MultiCsvWrite extends AbstractCsvWrite {
//
//    public Integer fileRowNum;
//    List<SingleCsvWrite> files;
//    SingleCsvWrite tempCsvWrite;
//    public Integer model;
//
//    public MultiCsvWrite(ExcelFileType fileType,
//                         Class headClass,
//                         Headers headers,
//                         String fileName,
//                         Integer fileRowNum,
//                         Integer model,
//                         boolean customized,
//                         boolean ifMapData,
//                         List<List<String>> xlsxHeaderList,
//                         Map<Integer, Integer> columnWidthMap
//                         ) throws IOException {
//        super(fileType, headClass, headers,fileName,customized,ifMapData,xlsxHeaderList,columnWidthMap);
//        this.fileRowNum = fileRowNum;
//        this.model = model;
//    }
//
//    @Override
//    public void initFile() throws IOException {
//        files = new ArrayList<>();
//        tempCsvWrite = new SingleCsvWrite(fileType,
//                                        headClass,
//                                        headers,
//                                        fileName,
//                                        customized,
//                                        ifMapData,
//                                        xlsxHeaderList,
//                                        columnWidthMap);
//        files.add(tempCsvWrite);
//    }
//
//    @Override
//    public void write(Object data) throws Exception {
//        if(tempCsvWrite.size() > fileRowNum){
//            tempCsvWrite.close();
//            tempCsvWrite = new SingleCsvWrite(fileType,
//                                            headClass,
//                                            headers,
//                                            fileName + "_" + files.size(),
//                                            customized,
//                                            ifMapData,
//                                            xlsxHeaderList,
//                                            columnWidthMap);
//            files.add(tempCsvWrite);
//        }
//
//        tempCsvWrite.write(data);
//    }
//
//    @Override
//    public File getFile() throws IOException {
//        ZipOutputStream out = null;
//        try {
//            File zipfile = new File(fileName + ".zip");
//            if(model==CsvExportBuilder.MULTI_ZIP_MODEL){
//                out = new ZipOutputStream(new FileOutputStream(zipfile));
//            }
//            byte[] buf = new byte[4096];
//
//            for(SingleCsvWrite csvWrite : files){
//                csvWrite.close();
//                if(model==CsvExportBuilder.MULTI_NOT_ZIP_MODEL){
//                    continue;
//                }
//                FileInputStream in = null;
//                File file = null;
//                try {
//                    file = csvWrite.getFile();
//                    in = new FileInputStream(file);
//                    out.putNextEntry(new ZipEntry(file.getName()));
//                    int len;
//                    while( (len = in.read(buf)) > 0){
//                        out.write(buf, 0, len);
//                    }
//                    out.closeEntry();
//                } catch (IOException e) {
//                    log.info("文件压缩流导入异常",e);
//                    throw e;
//                } finally {
//                    if(in != null){
//                        in.close();
//                    }
//                    if(file != null){
//                        file.delete();
//                    }
//                }
//            }
//            return zipfile;
//        } catch (IOException ex){
//            log.info("文件压缩流导入异常",ex);
//            throw ex;
//        } finally {
//            if(out != null){
//                out.close();
//            }
//        }
//    }
//}
